The principal application area for computer image generation has been that of visual training and/or entertament simulators which present scenes to an operator, usually a trainee or game player, that allows the operator to practice some task such as flying an airplane, helicopter or space vehicle. In a flight simulator, a three-dimensional model of a desired "gaming area", called a visual data base, is prepared and stored in memory of a computer. Typically, the visual data base is an array of points, generally in the form of Cartesian coordinates. In visual data bases of this type, the z component associated with each x,y position may be an elevation value, or some other attribute required to produce a visually pleasing scene, such as color, hazing, viscosity, or the like.
In its usual configuration, the simulator combines an image generator, typically a computer, with a display device such as a cathode ray tube (CRT) or liquid crystal display (LCD). The image generator converts the three-dimensional visual data base into a two-dimensional scene for display on the display device. The generated imagery is meant to be representative of the true scenes that the operator would see if the operator were actually performing the task being simulated. The generation of display images is said to be in "real time" if the images are updated fast enough to provide the operator with a sense of motion.
Real-time generation of visual scenes is usually a compromise between realism and the cost of the image generator and the display device. Generation of visually pleasing and realistic appearing images requires the manipulation of substantial amounts of data by the image generator. This manipulation typically requires a high speed processor and a large amount of associated memory for storing both the raw data and the rendered image. In the past, various techniques have been employed to accelerate processing of the visual data during scene rendering, usually at the cost of reduced resolution and realism. Many prior techniques rendered the terrain of the gaming area using so-called polygonal projections. This type of visual scene rendering, while adequate for simple games, or for games where the focus of attention is not on the overall visual scene, lacks the realism important to providing the user with a true simulation of the operation of the aircraft or vehicle simulated. Such realism is particularly important where the operator of the game is engaging in simulated combat, such as in a dog fight or tank battle. The simulation has two parts: first the operation model that simulates the actual operation of the plane or vehicle in response to operator inputs. For example, in a flight simulation, the operator must be presented with a flight model that mimics, as closely as possible, the actual flight characteristics of the plane being simulated. The flight model must present the operator with a realistic flying experience, mimicking the responses of the aircraft in a wide variety of situations.
Typically, a flight model must provide a realistic simulation of the aircraft's response to changes such as operator inputs controlling climb, descent, banking for maneuvering, as well as determining whether the aircraft is in level flight or landing or taking off. While the processor is controlling the flight model, it must also associate the movements of the aircraft with motion over the ground. Thus, in the second part of the simulation the processor must also render and update a visual scene representing a simulated "world" that is experienced by the operator as the operator "flies" the aircraft through the simulation.
Rendering a realistic visual scene at a rate that provides a visually pleasing and realistic experience places a heavy load on the processor. Thus, it is important to optimize the rendering of the scene to reduce processor load and data transmittal. In these simulations much of the action involves use of the features of the terrain, either for purpose of evasion or to lend difficulty to enemy detection and attack.
One prior approach to presenting more realistic terrain to a virtual observer moving through a gaming area is described in U.S. Pat. No. 5,550,959 issued to Freeman. This approach forgoes the simplicity of polygonal features and uses a technique based on volume elements. In this approach, the visual data base contains elevational and color data associated with each point in an array of points defining a gaming area. The location of the operator in relation to the coordinates of the visual data base is determined from the operator's starting position in the gaming area and the operator inputs. The terrain generator uses this information to divide the area of the visual scene visible to the operator into a number of cross-sections oriented perpendicular to the line of sight of the operator. The horizontal scale of the cross-sections changes proportionately to the distance from the operator, as does the vertical scale of the terrain features being displayed. The horizontally and vertically scaled visual scene is generated one cross-section at a time until the entire scene is rendered, and then displayed. Alternatively, each point on a series of individual cross-sections can be generated, stepping backwards or forwards through the cross-sections. One disadvantage of this approach is that the distance to the visible horizon is limited, resulting in terrain features suddenly appearing on the horizon as the operator moves toward the horizon. Another problem arises as an operator moves toward an object or terrain feature. In this case, the resolution of the feature is limited to the size of the smallest volume area in the data base. This results in terrain features rendered with a visually unrealistic and unpleasing blocky appearance. Another shortcoming of previous methods of terrain generation using volume elements has been difficulty in providing motion in all axes, known as pitch, yaw and roll. Because horizontal and vertical scaling were necessarily fixed to enhance processing speed, prior techniques could provide virtually no adjustment for pitch or roll. The lack of such features is detrimental to the level of realism achieved by the simulation, and thus is disadvantageous in providing the kind of exciting and visually pleasing simulation sought by a game player.
Additionally, game developers were constrained by the relatively slow processing speed of available processors incorporated in computers and gaming devices, slow data transfer rates across the internal bus of the computer or gaming device, and the amount of rapidly addressable random access memory available for storing the data comprising the visual image to be displayed. With the advent of 4.times.86 and other advanced processors, VESA and PCI bus architecture and the availability of inexpensive memory, developers are now able to utilize more sophisticated data retrieval and display techniques without sacrificing execution speed of the simulation.
What has been needed is a technique for real-time generation of visual displays without sacrificing realism or requiring expensive hardware.